---
title: Facade API
description: Univer の使用を簡素化するために Facade API をアプリケーションに追加する方法について学びます。
icon: PlugZap
---

複雑な要件に対応するため、Univer のアーキテクチャも非常に複雑になっています。そのため、利用時に難しさを感じる場合があります。これに対応するため、よりシンプルで使いやすい Facade API を提供しています。

本章では、Facade API をアプリケーションに追加する方法について詳しく説明します。次の「Features」章では、各機能の主要な Facade API を一覧で紹介します。すべての Facade API を確認したい場合は、各プラグインの API リファレンスをご参照ください。

<Callout type="warning" title="注意事項">
  一部の Facade API は非同期です。特にデータを変更する API は Promise を返すことが多いです。変更後すぐにデータを取得したい場合は、await や .then() を使用してください。そうしないと、予期しない結果になることがあります。どの API が Promise を返すかについては、該当する API リファレンスマニュアルをご参照ください。
</Callout>

## プリセットモードでの Facade API の統合

Univer をプリセットモードで統合する場合、対象機能の Facade API が自動的にインポートされ、Univer インスタンス作成時に対応する Facade API インスタンス univerAPI が返されます。直接利用可能です。

## プラグインモードでの Facade API の統合

### インストール

Univer をプラグインモードでインストールする場合、Facade API の実装は各プラグインに分散されており、グローバルな Facade API ルートオブジェクトにマウントされます。つまり、Facade API を提供するプラグインについては、必要に応じて対応する Facade API 実装をインポートできます。

```typescript
import { FUniver } from '@univerjs/core/facade'

import '@univerjs/ui/facade'
import '@univerjs/docs-ui/facade'
```

<Callout type="warning" title="注意事項">
  すべてのプラグインにファサードパッケージが含まれているわけではありません。各機能のドキュメントでこれを明記します。
</Callout>

### 使い方

```typescript
import { FUniver } from '@univerjs/core/facade'

const univerAPI = FUniver.newAPI(univer)
```

### 注意事項

すべての Facade API が即座に呼び出せるわけではありません。一部の API は特定のライフサイクル段階で使用する必要があります。即時実行で問題が発生した場合は、以下の方法で適切なライフサイクル段階を選択して実行してください：

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.LifeCycleChanged, ({ stage }) => {
  if (stage === univerAPI.Enum.LifecycleStages.Rendered) {
    // ライフサイクルが Rendered のときに実行するコード
  }
  if (stage === univerAPI.Enum.LifecycleStages.Steady) {
    // ライフサイクルが Steady のときに実行するコード
  }
})
```
